#ifndef LABIRYNT_H_
#define LABIRYNT_H_

#include <cstdlib>
#include <ctime>
#include <stack>
#include <queue>

class Labirynt {
	char ** pola;
public:
	enum wartosc_pola
	{
		PRZESZKODA=0,
		PUSTE=1,
		KONIEC=2
	};
	enum kierunek
	{
		GORA=0,
		DOL=1,
		LEWO=2,
		PRAWO=3
	};
	static const int wymiarX = 42;
	static const int wymiarY = 24;
	int gracz1x;
	int gracz1y;
	char gracz1kierunek;
	int gracz2x;
	int gracz2y;
	char gracz2kierunek;
	std::stack<char> sciezkaGracza2;
	bool poruszGraczem2(); //zwraca true, jeśli przeciwnik wygrał
	bool znajdzSciezke(int srcx,int srcy,int dstx, int dsty,std::stack<char> * sciezka);
	//sprawdza czy istnieje sciezka pomiędzy dwoma zadanymi punktami
	//i ustawia ją w polu sciezkaGracza2
	Labirynt();
	char getPole(int x, int y) { if(x<wymiarX && y<wymiarY) return pola[x][y]; else return -1; };
	void setPole(int x, int y, wartosc_pola w) { if(x<wymiarX && y<wymiarY) pola[x][y]=w; };
	~Labirynt();
};

#endif /* LABIRYNT_H_ */
